#ifndef _MAP_H
#define _MAP_H

#include "game\Tile.h"
#include "core\Vec.h"
#include <vector>

enum Direction
{
	NORTH,
	EAST,
	SOUTH,
	WEST
};

typedef std::vector<Vec> Path;

class Map
{
private:
	int m_width;
	int m_height;
	Tile* m_grid;
  Vec m_stairsUp;
  Vec m_stairsDown;	  
public:
  Map(int width, int height);
  ~Map();
	bool inBounds(Vec p);
  TileType getTileType(Vec p);
  void setTileType(Vec pos, TileType t);
  bool isPassable(Vec p);
  Path path(Vec a, Vec b);
  int getWidth() {return m_width;}
  int getHeight() {return m_height;}
  Vec getStairsUpPos() {return m_stairsUp;}
  Vec getStairsDownPos() {return m_stairsDown;}
  Tile* getTile(Vec p);
};

#endif